ADR-002: Cloudflare边缘计算选型
背景与问题
松鼠提醒需要处理海量设备的实时状态上报,核心挑战:
- 超低延迟:用户状态上报需要<50ms响应
- 全球分布:用户遍布全球,需要就近接入
- 突发流量:早晚高峰流量可能是平峰的10倍
- 成本敏感:按请求计费,避免闲置资源浪费
问题:选择哪种边缘计算方案来处理状态上报和预处理?
考虑选项
选项对比表
| 维度 | Cloudflare Workers | AWS Lambda@Edge | 腾讯云SCF | Vercel Edge |
|---|---|---|---|---|
| 全球节点 | ✅ 250+ | ✅ 400+ CloudFront | ⚠️ 国内为主 | ⚠️ 有限 |
| 香港延迟 | ✅ <10ms | ✅ <15ms | ❌ 跨境>50ms | ⚠️ ~20ms |
| 冷启动 | ✅ 0ms (V8 Isolate) | ❌ 100-300ms | ❌ 100-500ms | ✅ 0ms |
| 计费模式 | ✅ 按请求/CPU时间 | ❌ 按请求+持续时间 | ❌ 按资源包 | ✅ 按请求 |
| 免费额度 | ✅ 10万/天 | ❌ 无 | ⚠️ 有限 | ✅ 较宽松 |
| 生态集成 | ✅ Durable Objects/R2 | ✅ AWS生态 | ✅ 腾讯云生态 | ⚠️ 有限 |
| KV存储 | ✅ Workers KV | ❌ 需DynamoDB | ✅ Redis | ❌ 需外部 |
| WebSocket | ✅ Durable Objects | ❌ 不支持 | ✅ 支持 | ⚠️ 有限 |
| 成本估算 | ¥5万/年 | ¥20万/年 | ¥15万/年 | ¥8万/年 |
各选项详细分析
1. Cloudflare Workers(推荐)
- 优点:
- V8 Isolate冷启动时间为0,极致性能
- 250+边缘节点,香港<10ms延迟
- Workers KV全球同步,适合配置下发
- Durable Objects支持有状态WebSocket
- 成本最低,免费额度 generous
- 缺点:
- 运行时受限(不支持原生Node.js模块)
- CPU时间限制(50ms免费/400ms付费)
- 调试相对困难
2. AWS Lambda@Edge
- 优点:CloudFront全球节点,与AWS生态集成
- 缺点:
- 冷启动100-300ms,不如Workers
- 部署到CloudFront需要15-20分钟
- 成本较高
- 不支持KV原生存储
3. 腾讯云Serverless Cloud Function (SCF)
- 优点:国内合规,与腾讯云产品集成
- 缺点:
- 香港节点有限,跨境延迟高
- 冷启动时间较长
- 主要面向国内用户
4. Vercel Edge Functions
- 优点:开发者体验好,与Next.js集成
- 缺点:
- 节点数量不如Cloudflare
- 企业级功能(如Durable Objects)缺失
- 更适合SSR而非边缘计算
决策与理由
最终决策:选择 Cloudflare Workers
决策理由
- 延迟优势 ⭐⭐⭐⭐⭐
- 香港边缘节点延迟<10ms,满足实时状态上报需求
-
0ms冷启动,用户体验极致流畅
-
成本优势 ⭐⭐⭐⭐⭐
- 按请求计费,无闲置成本
- 预估年成本5万,比其他方案节省60%+
-
免费额度覆盖测试和小规模用户
-
架构契合 ⭐⭐⭐⭐⭐
- Workers KV适合存储用户配置和地理围栏数据
- Durable Objects可用于WebSocket推送提醒
-
R2对象存储适合轨迹数据归档
-
全球分布 ⭐⭐⭐⭐⭐
- 250+节点覆盖全球主要城市
-
Anycast自动路由到最近节点
-
技术栈匹配 ⭐⭐⭐⭐
- TypeScript/JavaScript支持良好
- 状态引擎逻辑轻量,符合CPU限制
风险与缓解措施
| 风险 | 影响 | 缓解措施 |
|---|---|---|
| V8 Isolate限制(50ms CPU) | 中 | 1. 复杂计算下沉到K8s 2. 优化算法复杂度 3. 升级付费计划(400ms) |
| 无法使用原生Node.js模块 | 低 | 1. 使用Web标准API 2. 纯JavaScript实现核心逻辑 |
| 供应商锁定 | 中 | 1. 核心逻辑抽象为可移植代码 2. 保留迁移到标准Serverless的能力 |
| 调试困难 | 低 | 1. 使用wrangler本地模拟 2. 完善的日志和监控 |
| Workers KV一致性(最终一致) | 低 | 1. 配置数据允许延迟同步 2. 关键状态使用Durable Objects |
分层架构设计
为避免Cloudflare Workers限制,采用分层架构:
Cloudflare Workers (边缘层)
- 状态上报接收
- 简单校验和预处理
- 地理围栏匹配
↓
腾讯云K8s (逻辑层)
- 复杂状态机计算
- 业务逻辑处理
- 大规模数据分析
↓
TiDB (数据层)
- 持久化存储
- 实时分析
实施计划
- Phase 1(1周):Workers环境搭建,基础路由实现
- Phase 2(1周):Workers KV配置存储,Durable Objects WebSocket
- Phase 3(1周):与K8s服务联调,端到端测试
- Phase 4(1周):灰度发布,性能监控
相关文档链接
🐿️ 松鼠提醒项目 | 架构师 @architect-lead | 已批准Cloudflare Workers作为边缘计算基础设施